<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>作为函数方法调用函数-2</title>
</head>

<body>
    <!-- 在 JavaScript 中, 函数是对象。JavaScript 函数有它的属性和方法。 -->
    <!-- call() 和 apply() 是预定义的函数方法。 两个方法可用于调用函数，两个方法的第一个参数必须是对象本身。 -->

    <p id="demo"></p>

    <script>
        var myObject, myArray;
        function myFunction(a, b) {
            return a * b;
        }
        myArray = [10, 2]
        myObject = myFunction.apply(myObject, myArray);      // 返回 20
        document.getElementById("demo").innerHTML = myObject; 
    </script>

    <!-- 两个方法都使用了对象本身作为第一个参数。 两者的区别在于第二个参数： apply传入的是一个参数数组，也就是将多个参数组合成为一个数组传入，而call则作为call的参数传入（从第二个参数开始）。
    在 JavaScript 严格模式(strict mode)下, 在调用函数时第一个参数会成为 this 的值， 即使该参数不是一个对象。
    在 JavaScript 非严格模式(non-strict mode)下, 如果第一个参数的值是 null 或 undefined, 它将使用全局对象替代。
    通过 call() 或 apply() 方法你可以设置 this 的值, 且作为已存在对象的新方法调用。 -->
</body>

</html>